package beans;

import java.beans.DesignMode;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;

import org.aspectj.runtime.internal.PerObjectMap;

import com.sun.xml.internal.bind.v2.TODO;

import modelo.Destinatario;
import modelo.Proyecto;
import modelo.Usuario;
import dao.PersonaDao;
import dao.ProyectoDao;
import dao.UsuarioDao;
import excepciones.DaoException;

@ManagedBean //(name = "LoginBean")
@RequestScoped
public class MapaBean {
	
	@ManagedProperty(value="#{loginBean}")
	private LoginBean loginBean;
	
	@ManagedProperty(value="#{editProyectoBean}")
	private EditProyectoBean editProyectoBean;
	
	/*  Variables del proyecto */
	
	private Proyecto proyecto;
	private Long id;
	//private List<Destinatario> destinatarios;
	
	private List<Destinatario> destinatarios = new ArrayList<Destinatario>();
	private List<ProyectoDestinatario> proyectosConDestinatarios = new ArrayList<ProyectoDestinatario>(); 
	

	public List<ProyectoDestinatario> getProyectosConDestinatarios() {
		return proyectosConDestinatarios;
	}

	public void setProyectosConDestinatarios(
			List<ProyectoDestinatario> proyectosConDestinatarios) {
		this.proyectosConDestinatarios = proyectosConDestinatarios;
	}

	public List<Destinatario> getDestinatarios() {
		return destinatarios;
	}

	public void setDestinatarios(List<Destinatario> destinatarios) {
		this.destinatarios = destinatarios;
	}

	public LoginBean getLoginBean() {
		return loginBean;
	}

	public void setLoginBean(LoginBean loginBean) {
		this.loginBean = loginBean;
	}
	



	public EditProyectoBean getEditProyectoBean() {
		return editProyectoBean;
	}

	public void setEditProyectoBean(EditProyectoBean editProyectoBean) {
		this.editProyectoBean = editProyectoBean;
	}

	public Proyecto getProyecto() {
		return proyecto;
	}

	public void setProyecto(Proyecto proyecto) {
		this.proyecto = proyecto;
	}

	public MapaBean(){
		
	}
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
	
	public String volver(){
		System.out.println("irIndex"+this.getLoginBean().getObjPerfil().getNombre());
		return "irIndex"+this.getLoginBean().getObjPerfil().getNombre();
	}

		
	@PostConstruct
	public void init(){
		ProyectoDao proyectoDao = new ProyectoDao();
		if (editProyectoBean.getProyecto() != null){
			
			try {
				proyecto = proyectoDao.findById(editProyectoBean.getId());	
				List<Destinatario> des = (List<Destinatario>) proyecto.getMis_destinatarios();
				setDestinatarios(des);
				setProyecto(proyecto);
				setId(proyecto.getId());				
				//proyectoDao.closeEntityManager();
			} catch (DaoException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}			
		}
		else{
			List<Proyecto> listProyectos = proyectoDao.todosLosproyectosDeUsuario();
			for (Proyecto proyecto : listProyectos) {
				List<Destinatario> destinatariosProyecto = (List<Destinatario>) proyecto.getMis_destinatarios();
				for (Destinatario destinatario : destinatariosProyecto) {
					getDestinatarios().add(destinatario);
					ProyectoDestinatario p = new ProyectoDestinatario(proyecto.getDenominacion(), destinatario.getNombre(), destinatario.getDireccion());
					getProyectosConDestinatarios().add(p);
				}
			}
		}
	}
	
	
	
	
	
}